La version numrique du sujet fournie en fichier texte (format *.txt) doit tre ouverte en tant que braille informatique. Elle sera affiche en braille 6 points. Lapplication  bloc-notes  des ordinateurs courants, ou des logiciels spcialiss, peut tre utilise.  dfaut, reportez-vous  la version en papier.
Le candidat doit rdiger ses rponses sur un second fichier, et peut demander  un assistant ou  un secrtaire de recopier sa production de faon manuscrite sur une copie.
Un fichier en format *.pdf est galement fourni.
La page du document original est indique par  PO 1  pour  page originale n1 . Les rfrences aux pages braille (sommaire, rfrences en cours de sujet) font rfrence au sujet braille emboss.


po `1
`25-nsij`1me1
braille intgral
baccalaurat gnral
preuve d'enseignement de spcialit
session `2025
numrique et sciences informatiques
volume `1: texte
preuve du mardi `17 juin `2025
dure de l'preuve: `3 heures `30
l'usage de la calculatrice n'est pas autoris.
ds que ce sujet vous est remis, assurez-vous qu'il est complet.
le sujet comporte `17 pages numrotes de `1  `17 dans la version originale.
la version en braille intgral est compose de deux volumes:
9o volume `1: le sujet de `52 pages numrotes de `1  `52;
9o volume `2: `3 planches tactiles sur papier thermogonfl.
:le sujet est compos de trois exercices indpendants.
le candidat traite les trois exercices.
conformment au code braille, les espaces  remplir prsents dans l'original sont symboliss par les signes `-'
sommaire
9o exercice `1 (`6 points) `5
-- partie a `6
-- partie b `10
9o exercice `2 (`6 points) `16
9o exercice `3 (`8 points) `33
-- partie a `35
-- partie b `37
-- partie c `40
-- partie d `42
po `2
exercice `1 (`6 points)
cet exercice porte sur les bases de donnes relationnelles et les requ2tes sql.
dans cet exercice, on pourra utiliser les clauses du langage sql pour:
9o construire des requ2tes d'interrogation  l'aide de select, from, where (avec les oprateurs logiques :and, or), join ... on;
9o construire des requ2tes d'insertion et de mise  jour  l'aide de update, insert, delete;
9o affiner les recherches  l'aide de distinct, order by.
dans un schma relationnel, on utilisera les conventions suivantes:
9o la cl primaire d'une relation est dfinie par son attribut soulign `;(mis en vidence dans la version braille)';
9o les attributs prcds de 0 sont les cls trangres.
le guitariste slash possde une incroyable collection de guitares. maud est une grande fan de slash. elle dcide de faire un inventaire de la collection de guitares sous la forme d'une base de donnes relationnelle.
partie a
dans cette partie, maud utilise la relation suivante: 
inventaire (??id**, marque, modele, annee, num-ser, prix)
num-ser reprsente le numro de srie d'une guitare. il est unique pour chaque guitare d'une m2me marque. le prix est en euro.
voici un extrait de la table inventaire.
`;tableau linaris.'
inventaire
id; marque; modele; annee; num-ser; prix.
`1; gibson; les paul goldtop; `1956; @`70562; `100'000.
`2; gibson; les paul goldtop; `1988; `81738349; `20'000.
`3; gibson; les paul standard; `1959; @`90663; `250'000.
`4; gibson; les paul standard; `1987; `81757532; `25'000.
`5; fender; telecaster; `1952; `000230; `150'000.
`6; fender; telecaster; `1965; `81345673; `10'000.
`7; fender; stratocaster; `1956; `001359; `200'000.
`8; fender; stratocaster; `1965; `81757532; `15'000.
po `3
`1. expliquer pourquoi l'attribut num-ser ne peut pas 2tre une cl primaire de la relation inventaire.
`2. donner, sous forme de tableau, le rsultat de la requ2te suivante applique  l'extrait de table prcdent.
select marque, modele
from inventaire
where annee `" `1956
`3. crire une requ2te sql permettant d'obtenir toutes les annes du modle les paul standard dans la collection.
`4. crire une requ2te sql permettant d'obtenir tous les modles de guitares de la marque gibson par ordre croissant de l'anne dans la collection.
`5. maud a fait une erreur de saisie pour la guitare d'identifiant id`"1. l'anne est en ralit `1957. crire une requ2te sql permettant de corriger cette erreur de saisie.
partie b
maud change de reprsentation pour l'inventaire de la collection. dans cette partie, maud utilise maintenant les trois relations suivantes:
marque (??id**, nom)
modele (??id**, nom, 0id-marque)
guitare (??id**, 0id-modele, annee, num-ser, prix)
dans la relation modele, 0id-marque est une cl trangre relie  la cl primaire ??id** de la relation marque. dans la relation guitare, 0id-modele est une cl trangre relie  la cl primaire ??id** de la relation modele.
voici des extraits des trois tables marque, modele, guitare.
`;tableau en colonne'
marque
::::::::::
id; nom
`1; gibson
`2; fender
`;tableaux linariss'
modele
id; nom; id-marque.
`1; les paul goldtop; `1.
`2; les paul standard; `1.
`3; telecaster; `2.
`4; stratocaster; `2.
po `4
guitare
id; id-modele; annee; num-ser; prix.
`1; `1; `1956; @`70562; `100'000.
`2; `1; `1988; `81738349; `20'000.
`3; `2; `1959; @`90663; `250'000.
`4; `2; `1987; `81757532; `25'000.
`5; `3; `1952; `000230; `150'000.
`6; `3; `1965; `81345673; `10'000.
`7; `4; `1956; `001359; `200'000.
`8; `4; `1965; `81757532; `15'000.
`6. expliquer brivement, en justifiant, dans quel ordre les trois tables doivent 2tre cres.
`7. crire une requ2te sql permettant d'obtenir le numro de srie et l'anne de toutes les guitares les paul standard de la collection.
maud vient d'apprendre que slash a fait cadeau d'une de ses guitares  un ami. elle doit donc la retirer de sa base de donnes.
`8. crire une requ2te sql permettant de retirer de la collection la guitare d'identifiant id`"3.
slash a aussi achet une guitare d'une marque qu'il n'avait pas encore dans sa collection. maud dcide de la rajouter.
`9. crire l'ensemble des requ2tes sql permettant d'ajouter la guitare suivante:
9o marque: bc rich
9o modle: mockingbird
9o anne: `1992
9o numro de srie: `92r
9o prix: `5'000.
on supposera que l'on peut attribuer la valeur `3 pour l'attribut id dans la table marque pour la marque bc rich, que l'on peut attribuer la valeur `5 pour l'attribut id dans la table modele pour le modle mockingbird et que l'on peut attribuer la valeur `9 pour l'attribut id dans la table guitare pour cette guitare.
maud souhaite conna3tre la valeur totale des modles stratocaster de la collection. son ami david lui conseille de regarder la fonction sum. la syntaxe pour utiliser cette fonction sql peut 2tre similaire  celle-ci:
po `5
select sum(nom-colonne)
from tab
cette requ2te sql permet de calculer la somme des valeurs contenues dans la colonne nom-colonne de la table tab.
`10. crire une requ2te sql permettant de calculer la valeur totale des modles stratocaster de la collection de slash.
po `6
exercice `2 (`6 points)
cet exercice porte sur l'algorithmique, les structures de donnes, et la gestion de processus.
on cherche  crer une application de type :liste de t1ches  faire pour aider alice  planifier sa journe. pour cela alice saisit les informations concernant chacune des t1ches qu'elle doit effectuer: elle indique un nom pour la t1che, ainsi que la dure qu'elle estime ncessaire afin de la raliser. on reprsente une t1che saisie par alice  l'aide d'un objet de type tache, muni de quatre attributs:
9o le numero de la t1che, saisi par alice;
9o le nom de la t1che, saisi par alice;
9o la duree (un entier exprim en minute) ncessaire  la ralisation de la t1che saisie par alice;
9o la duree-restante (un entier exprim en minute) avant la fin de la t1che. cet attribut sera initialis avec la dure totale ncessaire  la ralisation de la t1che.
avancer de n minutes (n entier positif) dans une t1che consiste  diminuer de n la dure restante de cette t1che. une t1che est termine si la dure restante est ngative ou nulle.
lors de la phase de planification de ses t1ches (aucune d'entre elles n'est commence), alice liste les t1ches suivantes qui doivent 2tre effectues:
`;tableau linaris'
numro; nom; dure; dure restante.
`1; rpondre aux e-mails; `45; `45.
`2; ranger ma chambre; `60; `60.
`3; rviser la nsi; `90; `90.
`4; s'entra3ner aux checs; `30; `30.
`5; apprendre le vocabulaire de chinois; `30; `30.
`6; lire fondation; `60; `60.
`7; crire ma lettre au pre no6l; `20; `20.
po `7
on dispose de la classe tache ci-dessous pour reprsenter les t1ches:
`1 class tache:
`2 def --init--(self, numero, nom, duree):
`3 self.numero `" numero
`4 self.nom `" nom
`5 self.duree-initiale `" duree
`6 self.duree-restante `" duree
`7
`8 def --repr--(self):
`9 return '2t'`!str(self.numero)`!'@'
`1. donner le code python qui permet d'instancier deux variables tache`1 et tache`2 reprsentant les t1ches:
9o t1che numro `1: rpondre aux e-mails. dure estime: `45 minutes.
9o t1che numro `2: ranger ma chambre. dure estime: `60 minutes.
on supposera dans la suite que les variables tache`1, tache`2, ..., tache`7 reprsentent les t1ches tablies par alice lors de la phase de planification.
la mthode --repr-- renvoie une reprsentation de l'instance sous forme d'une cha3ne de caractres. la fonction print utilise cette mthode. ainsi on a:
@@@ print(tache`1)
2t`1@
`2. recopier et complter le code de la mthode avancer de la classe tache qui permet d'avancer la t1che self de n minutes.
`1 def avancer(self, n):
`2 `-'
`3. recopier et complter le code de la mthode est-terminee de la classe tache qui renvoie true si la t1che est termine, ou false sinon.
`1 def est-terminee(self):
`2 `-'
afin d'aider alice  planifier sa journe, on lui propose d'associer  chacune des t1ches une priorit. la priorit d'une t1che est reprsente par un entier de la manire suivante: `1 est la priorit minimale et, plus le nombre est grand, plus la t1che associe est prioritaire.
pour stocker toutes les t1ches  effectuer, on utilise une file, dans laquelle les lments sont des tuples (tache, priorite). les lments stocks dans la file doivent respecter les deux conditions ci-aprs.
9o condition `1: les lments sont rangs par ordre dcroissant de priorit. l'lment de priorit maximale se trouve au dbut de la file, l'lment le moins prioritaire se trouve  la fin de la file.
po `8
9o condition `2: parmi les lments de m2me priorit, les lments sont rangs dans l'ordre dans lequel ils ont t insrs dans la file. ainsi, le premier lment de priorit p insr se trouve devant les lments de m2me priorit p insrs plus tard.
par exemple, si la file de t1ches f est la file:
(dbut)b (2t`3@, `4) (2t`1@, `3) (2t`2@, `3) (2t`4@, `1) (2t`5@, `1) (fin)b
cela signifie que:
9o la t1che de priorit maximale est la t1che numro `3;
9o les deux t1ches  excuter en priorit aprs la t1che numro `3 sont les t1ches numro `1 et numro `2. la t1che numro `1 a t ajoute  la file des t1ches  traiter avant la t1che numro `2;
9o il n'y a pas de t1che de priorit `2;
9o les t1ches les moins prioritaires de la file sont les t1ches numro `4 et numro `5. la t1che numro `4 a t ajoute avant la t1che numro `5.
`4. reprsenter l'tat de la file f lorsqu'on lui ajoute successivement la t1che numro `6 avec la priorit `2, puis la t1che numro `7 avec la priorit `4 en respectant les conditions `1 et `2 dcrites ci-dessus.
on suppose dj dfinies les mthodes suivantes pour la classe file:
9o file(): cre et renvoie un objet de type file, vide.
9o enfiler(self, e): ajoute l'lment e  la fin de la file f.
9o defiler(self): renvoie, en le supprimant de la file, le premier lment de la file si cela est possible.
9o examiner(self): renvoie, sans le supprimer de la file, le premier lment de la file si cela est possible.
9o est-vide(self): renvoie true si la file est vide, ou false sinon.
`5. en repartant de la file f suivante:
(dbut)b (2t`3@, `4) (2t`1@, `3) (2t`2@, `3) (2t`4@, `1) (2t`5@, `1) (fin)b
donner la valeur de f.defiler()(`0)b, et reprsenter le contenu de la file f aprs l'excution de cette instruction.
`6. en repartant de la file f suivante:
(dbut)b (2t`3@, `4) (2t`1@, `3) (2t`2@, `3) (2t`4@, `1) (2t`5@, `1) (fin)b
donner la valeur de f.examiner()(`1)b, et reprsenter le contenu de la file f aprs l'excution de cette instruction.
po `9
on souhaite crire une fonction ajouter-file-prio qui prend en paramtres:
9o une file f dont les lments sont des tuples (tache, priorite) respectant les deux conditions de l'nonc;
9o une t1che t; 
9o la priorit p de la t1che t;
et qui ajoute le tuple (t, p)  la bonne position dans la file f.
on utilise une file auxiliaire f-aux que l'on remplit en dfilant les lments en dbut de file f tant que la priorit du premier lment de la file est suprieure ou gale  p. puis on enfile l'lment (t, p) dans la file auxiliaire. on dfile ensuite tous les lments restants de f dans f-aux et enfin on enfile dans f tous les lments de f-aux.
`7. recopier et complter le code de la fonction ajouter-file-prio.
`1 def ajouter-file-prio(f, t, p):
`2 f-aux `" file()
`3 while `-':
`4 `-'
`5 `-'enfiler(`-')
`6 while not `-':
`7 `-'
`8 while not `-':
`9 `-'
`8. donner le co5t d'excution temporel dans le pire des cas de la fonction ajouter- file-prio, en fonction du nombre m d'lments de la file f.
une fois qu'alice a entr les t1ches qu'elle doit effectuer, leur dure estime, ainsi que la priorit  laquelle elle doit les effectuer, l'application lui propose un planning en utilisant la technique dite pomodoro:
9o la t1che  effectuer est la t1che qui se trouve en t2te de file;
9o on dfile cette t1che de la file des t1ches  effectuer;
9o on avance cette t1che de `25 minutes;
9o si cette t1che n'est pas termine, on rajoute cette t1che dans la file des t1ches  effectuer, avec la m2me priorit qu'initialement (en utilisant la fonction ajouter-file-prio);
9o si cette t1che se termine au cours des `25 minutes, alors alice attend la fin des `25 minutes en se reposant;
9o on continue ces tapes tant que la file des t1ches  effectuer n'est pas vide.
po `10
on rappelle les t1ches  effectuer ci-dessous, classes par ordre de priorit. on considrera que les t1ches sont ajoutes  la file de priorit dans l'ordre du tableau ci-dessous:
`;tableau linaris.'
numro; nom; dure; priorit.
`3; rviser la nsi; `90; `4.
`7; crire ma lettre au pre no6l; `20; `4.
`1; rpondre aux e-mails; `45; `3.
`2; ranger ma chambre; `60; `3.
`6; lire fondation; `60; `2.
`4; s'entra3ner aux checs; `30; `1.
`5; apprendre le vocabulaire de chinois; `30; `1.
`9. indiquer pour chaque bloc de `25 minutes la t1che qui avance, en suivant le modle propos, jusqu' la fin de toutes les t1ches.
on fera particulirement attention au cas o la t1che n'est pas termine: celle-ci est rajoute  la file des t1ches  effectuer (dont elle avait t supprime) avec la m2me priorit qu'initialement, en respectant les conditions `1 et `2 de l'nonc.
`10. crire le code d'une fonction planning qui prend en paramtre une file de priorit f dont les lments sont des tuples (tache, prio), et qui renvoie une liste de t1ches, dans l'ordre dans lequel elles vont 2tre effectues par tranche de `25 minutes avec la mthode pomodoro.
par exemple, si tache`1, tache`2 et tache`3 sont les t1ches numro `1, numro `2 et numro `3, alors le programme suivant:
`1 file `" file()
`2 for t, p in ((tache`1, `3), (tache`2, `3), (tache`3, `4))b:
`3 ajouter-file-prio(file, t, p)
`4 print(planning(file))
produit l'affichage:
(2t`3@, 2t`3@, 2t`3@, 2t`3@, 2t`1@, 2t`2@, 2t`1@, 2t`2@, 2t`2@)b
po `11
exercice `3 (`8 points)
cet exercice porte sur l'architecture matrielle (rseau), les arbres binaires de recherche et la programmation python.
l'entreprise cafnet possde plusieurs cafs rpartis dans diffrentes villes. le rseau de la cha3ne de cafs est reprsent en figure `1.
figure `1. schma d'une partie du rseau
`;voir planches tactiles no `1 et `2. '
sur le schma sont reprsents `4 routeurs, le rseau du sige social, le rseau du caf `1, le rseau du caf `2. dans les rseaux du caf `1 et du caf `2, des bornes de commandes sont connectes  des switchs (ce sont des boitiers de connexion qui n'ont pas eux-m2mes d'adresse ip). les `4 routeurs reprsents sont composs d'au moins `3 interfaces rseau capables de relier des rseaux ensemble. chaque interface possde donc une adresse ipv`4 sur le rseau auquel elle est relie.
les masques des sous-rseaux sont tous `255.255.255.0. avec ce masque, les trois premiers octets des adresses ip codent l'adresse rseau. le dernier octet, c'est--dire les `8 derniers bits, code l'adresse des machines  l'intrieur de chaque sous-rseau.
partie a
le grant veut faire installer une troisime borne de commande dans le caf `1.
`1. indiquer les deux seules adresses ip valides pour cette nouvelle borne, parmi les quatre adresses ip proposes.
(a) `192.168.20.2
(b) `192.168.20.157
(c) `192.168.20.261
(d) `192.168.24.10
po `12
l'adresse de diffusion, appele aussi adresse de broadcast, est la dernire adresse disponible  l'intrieur d'un rseau local.
`2. dterminer l'adresse de diffusion du rseau du caf `1.
`3. dterminer combien de machines informatiques il est encore possible de connecter au rseau du caf `1 aprs l'installation de la troisime borne de commande.
le rseau local du caf `1 n'a pas besoin de plus de `8 adresses ip diffrentes. ce dcompte d'adresses ip inclut les adresses ip rserves ( savoir l'adresse de diffusion et l'adresse du rseau). il est rappel que la longueur du masque de sous-rseau est actuellement de `24 bits (c'est--dire `3 octets).
`4. expliquer quelle est la longueur maximale du masque de sous-rseau que l'on pourrait choisir pour le rseau local du caf `1.
partie b
rip (routing information protocol) est un protocole de routage utilis dans les rseaux ip. il est conu pour rduire le nombre de sauts entre deux rseaux. un "saut" correspond au transfert des donnes d'un routeur  un autre. le protocole rip utilise le nombre de sauts comme critre principal pour valuer le co5t d'un chemin. autrement dit, il considre que le chemin le plus optimal est celui qui traverse le moins de routeurs.
la table de routage du routeur `2 de la figure `1 est reprsente `;page braille suivante':
`;tableau linaris.'
routeur `2
rseau destination; interface de sortie; prochain routeur; nombre de sauts.
`192.168.20.0; `192.168.20.1; aucun; `0.
`172.16.3.0; `172.16.3.1; aucun; `0.
`172.16.4.0; `172.16.4.1; aucun; `0.
`192.168.10.0; `172.16.3.1; `172.16.3.2; `2.
`172.16.0.0; `172.16.4.1; `172.16.4.2; `1.
`172.16.2.0; `172.16.4.1; `172.16.4.2; `1.
`192.168.30.0; `-'; `-'; `-'.
`172.16.1.0; `-'; `-'; `-'.
`5. recopier et complter les deux dernires lignes de la table de routage du routeur `2.
po `13
la table de routage du routeur `2 contient un rseau de destination pour lequel deux routes diffrentes sont possibles. la ligne correspondante dans la table de routage aurait donc pu 2tre remplie diffremment tout en respectant le protocole rip.
`6. identifier, dans la table de routage du routeur `2, le rseau de destination que l'on peut atteindre d'une autre faon et indiquer comment cette ligne de la table de routage pourrait 2tre modifie.
une adresse ip qui n'est pas rfrence dans la table de routage doit 2tre route par dfaut vers internet.
`7. recopier et complter la ligne  ajouter  la table de routage du routeur `2.
`;tableau linaris.'
rseau destination; interface de sortie; prochain routeur. 
autre; `-'; `-'.
partie c
ospf est galement un protocole d'changes de donnes entre les routeurs qui prend en compte le co5t des routes. le co5t est li au dbit des liaisons entre les routeurs par la formule suivante:
`cout"10^9/debit avec le dbit en `bits*s^-1.
`8. recopier et complter la dernire colonne du tableau ci-dessous:
`;tableau linaris.'
tableau des co5ts
type de connexion; dbit en `bit*s^-1; co5t.
ethernet; `10 `mbit/s^-1 "10^7 `bit*s^-1; `100.
fast ethernet; `100 `mbit*s^-1"10^8 `bit*s^-1; `-'.
fibre optique; `1 `gbit*s^-1"10^9 `bit*s^-1; `-'.
po `14
le schma ci-dessous met en vidence les types de connexion qui relient les routeurs.
figure `2. schma des types de connexion
`;voir planche tactile no `3. '
`9. dterminer la route dont le co5t est minimal pour aller du routeur `1 jusqu'au routeur `4 et calculer son co5t au sens du protocole ospf.
partie d
le but de cette partie est de classer les adresses ip des diffrents rseaux afin de faciliter leur recherche.
la fonction ip-bin prend en argument une cha3ne de caractres dcrivant une adresse ip en notation dcimale, et renvoie une cha3ne de caractres, de longueur `35 (`32 bits et les `3 points), dcrivant l'adresse ip en notation binaire.
exemple:
@@@ ip-bin('`192.168.10.1')
'`11000000.10101000.00001010.0 0000001'
`10. donner la cha3ne de caractres renvoye par ip-bin('`192.168.20.12').
la fonction precede prend en paramtres deux adresses ip en notation binaire, sous forme de cha3nes de caractres identiques  celles renvoyes par la fonction ip-bin. la fonction precede renvoie un boolen qui vaut true si la premire adresse ip en paramtre prcde la seconde adresse ip.
exemple:
@@@ a `" '`11000000.10101 000.00001010.00000001'
@@@ b `" '`11000000.10101 000.00001111.00000001'
@@@ precede(a, b)
true
po `15
l'algorithme compare bit  bit les deux cha3nes binaires, en lisant les cha3nes de caractres dans le sens usuel (de gauche  droite). dans l'exemple ci-dessus, tous les caractres sont identiques jusqu'au sixime caractre du troisime octet. comme le bit de l'adresse a est infrieur  celui de l'adresse b, on en dduit que l'adresse ip a prcde l'adresse ip b.
si la premire adresse ip ne prcde pas la seconde, la fonction doit renvoyer false.
l'algorithme de comparaison est traduit dans le langage python sous la forme suivante:
`1 def precede(ip-`1, ip-`2):
`2 for i in range(`35):
`3 if ip-`1(i)b 2 ip-`2(i)b:
`4 return `-'
`5 elif ip-`1(i)b @ ip-`2(i)b:
`6 return `-'
`7 return `-'
`11. expliquer dans quel cas la fonction precede excutera la dernire instruction return de la ligne `7.
`12. recopier et complter les lignes `4, `6 et `7 du code de la fonction precede.
les tables de routage de chaque routeur sont implmentes sous la forme d'arbre binaire de recherche avec la classe abr.
`1 class abr:
`2 def --init--(self, adresse-ip,
`3 interface, passerelle,
`4 cout):
`5 self.adresse-ip `" adresse-ip
`6 self.interface `" interface
`7 self.passerelle `" passerelle
`8 self.cout `" cout
`9 if adresse-ip !`" '':
`10 self.gauche `" abr('', '', '', `0)
`11 self.droite `" abr('', '', '', `0)
`12
`13 def est-vide(self):
`14 return `-'
dans cette reprsentation:
9o adresse-ip dsigne l'adresse ip de la destination;
9o interface dsigne l'interface rseau;
9o passerelle dsigne l'adresse ip du prochain routeur;
9o cout dsigne le nombre de sauts pour atteindre la destination.
po `16
9o par convention, l'arbre binaire vide est une instance de abr pour laquelle adresse-ip est une cha3ne de caractres vide;
9o un arbre binaire de recherche non vide possde ncessairement un sous-arbre gauche et un sous-arbre droit, ventuellement vides, qui sont tous les deux des arbres binaires de recherche. ces sous-arbres sont dsigns par gauche et droite dans la classe abr;
9o si elle n'est pas vide, l'adresse ip du sous-arbre gauche prcde l'adresse ip de l'instance parent;
9o si le sous-arbre droit n'est pas vide, alors l'adresse ip de l'instance parent prcde l'adresse ip du sous-arbre droit.
`13. citer un attribut et citer une mthode de la classe abr.
`14. recopier et complter la ligne `14 du code de la classe abr.
`15. justifier, en mobilisant des connaissances de cours, l'intr2t qu'il peut y avoir  reprsenter la table de routage par un arbre binaire de recherche.
la section de code qui dfinit modifie est incluse dans la classe abr.
`16 def modifie(self, adresse-ip,
`17 interface, passerelle,
`18 cout):
`19 if self.est-vide():
`20 self.adresse-ip `" adresse-ip
`21 self.interface `" interface
`22 self.passerelle `" passerelle
`23 self.cout `" cout
`24 self.gauche `" abr('', '', '', `0)
`25 self.droite `" abr('', '', '', `0)
`26 else:
`27 self.adresse-ip `" adresse-ip
`28 self.interface `" interface
`29 self.passerelle `" passerelle
`30 self.cout `" cout
les lignes `20  `23 sont exactement les m2mes que les lignes `27  `30.
`16. rcrire le code de la fonction modifie en vitant cette rptition.
po `17
la classe abr est complte afin de permettre l'ajout de nouvelles lignes  la table de routage, tout en conservant les proprits que doit possder un arbre binaire de recherche.
`32 def rechercher(self, adresse-ip):
`33 if self.est-vide() or adresse-ip `"" self.adresse-ip:
`34 return self
`35 elif precede(`-'):
`36 return self.gauche.re chercher(adresse-ip)
`37 else:
`38 return self.droite.re chercher(adresse-ip)
`39
`40 def inserer(self, adresse-ip,
`41 interface, passerelle,
`42 cout):
`43 destination `" self.rechercher(adresse-ip)
`44 destination.modifie(adresse-i p,
`45 interface, passerelle,
`46 cout)
on rappelle que la fonction precede prend en arguments des adresses ip crites sous forme binaire.
`17. recopier et complter la ligne `35 du code de la fonction rechercher.
